//package com.yz.design.enums;
//
//import com.alibaba.fastjson.JSONObject;
//
//import java.util.*;
//
///**
// * @ClassName PhoneReportRulesEnum
// * @Description 报备规则枚举
// * @Author 广长
// * @Date 2020/7/20
// * @Version V1.0
// **/
//public enum PhoneReportRulesEnum {
//    ELEVEN_FILING("1", "1", "手机号11位报备", "^[0-9]{11}$"),
//    AFTER_THE_FIRST_THREE_FIVE_FILING("2", "1", "手机号前3后5报备", "^[0-9]{3}[*]{3}[0-9]{5}$"),
//    EIGHT_FILING("3", "2", "手机号8位报备", "^(852|853)[0-9]{8}$"),
//    AFTER_FOUR("4", "2", "手机号后4位报备", "^(852|853)[*]{4}[0-9]{4}$");
//
//    /**
//     * 唯一key
//     */
//    private String key;
//    /**
//     * 报备规则类型 1:大陆, 2:港澳
//     */
//    private String type;
//    /**
//     * 名称
//     */
//    private String name;
//    /**
//     * 正则表达式
//     */
//    private String regular;
//
//    /**
//     * @param key     唯一key
//     * @param type    报备规则类型 1:大陆, 2:港澳
//     * @param name    描述
//     * @param regular 正则表达式
//     */
//    PhoneReportRulesEnum(String key, String type, String name, String regular) {
//        this.key = key;
//        this.type = type;
//        this.name = name;
//        this.regular = regular;
//    }
//
//    /**
//     * @Description: 通过key获取报备规则枚举
//     * @Author: 广长
//     * @Date: 2020/7/21
//     * @Param key:
//     * @Return: com.xfj.base.activity.enums.PhoneReportRulesEnum
//     */
//    public static PhoneReportRulesEnum get(String key) {
//        for (PhoneReportRulesEnum e : PhoneReportRulesEnum.values()) {
//            if (key.equals(e.key)) {
//                return e;
//            }
//        }
//        throw new IllegalArgumentException(String.format("%s is not a valid value for %s", key, PhoneReportRulesEnum.class));
//    }
//
//    /**
//     * @Description: 通过key集合获取报备规则枚举集合
//     * @Author: 广长
//     * @Date: 2020/7/21
//     * @Param keyList:
//     * @Return: java.util.List<com.xfj.base.activity.enums.PhoneReportRulesEnum>
//     */
//    public static List<PhoneReportRulesEnum> get(List<String> keyList) {
//        List<PhoneReportRulesEnum> phoneReportRulesEnumList = new ArrayList<>();
//        for (String key : keyList) {
//            phoneReportRulesEnumList.add(PhoneReportRulesEnum.get(key));
//        }
//        return phoneReportRulesEnumList;
//    }
//
//    /**
//     * @Description: 通过报备规则类型 来获取报备规则集合
//     * @Author: 广长
//     * @Date: 2020/7/20
//     * @Param type:
//     * @Return: java.util.List<com.xfj.base.activity.enums.PhoneReportRulesEnum>
//     */
//    public static List<PhoneReportRulesEnum> getByType(String type) {
//        List<PhoneReportRulesEnum> phoneReportRulesEnumList = new ArrayList<>();
//        for (PhoneReportRulesEnum e : PhoneReportRulesEnum.values()) {
//            if (type.equals(e.type)) {
//                phoneReportRulesEnumList.add(e);
//            }
//        }
//        return phoneReportRulesEnumList;
//    }
//
//
//    /**
//     * @Description: 获取手机报备规则json
//     * @Author: 广长
//     * @Date: 2020/7/21
//     * @Param phoneReportRulesEnumList: 报备枚举集合
//     * @Return: java.lang.String
//     */
//    public static String getPhoneReportRulesJson(List<PhoneReportRulesEnum> phoneReportRulesEnumList) {
//        List<Map<String, String>> resultRuleList = new ArrayList<>();
//        Map<String, String> ruleMap = new TreeMap<>();
//        for (PhoneReportRulesEnum e : phoneReportRulesEnumList) {
//            ruleMap = new TreeMap<>();
//            ruleMap.put("key", e.key);
//            ruleMap.put("type", e.type);
//            ruleMap.put("name", e.name);
//            ruleMap.put("regular", e.regular);
//            resultRuleList.add(ruleMap);
//        }
//        return JSONObject.toJSONString(resultRuleList);
//    }
//
//    /**
//     * @Description: 获取默认保存手机报备规则json
//     * @Author: 广长
//     * @Date: 2020/7/21
//     * @Return: java.lang.String
//     */
//    public static String getDefaultPhoneReportRulesJson() {
//        List<String> keyList = new ArrayList<>(Arrays.asList("1", "2", "3", "4"));
//        return PhoneReportRulesEnum.getPhoneReportRulesJson(PhoneReportRulesEnum.get(keyList));
//    }
//
//    /**
//     * @Description: 通过报备规则json获取key集合
//     * @Author: 广长
//     * @Date: 2020/7/21
//     * @Param phoneReportRulesJson:
//     * @Return: java.util.List<java.lang.String>
//     */
//    public static List<String> getPhoneReportRulesKeyList(String phoneReportRulesJson) {
//        List<String> keyList = new ArrayList<>();
//        List<PhoneReportRules> phoneReportRules = JSONObject.parseArray(phoneReportRulesJson, PhoneReportRules.class);
//        for (PhoneReportRules phoneReportRule : phoneReportRules) {
//            keyList.add(phoneReportRule.getKey());
//        }
//        return keyList;
//    }
//    /*    */
//
//    /**
//     * @Description: 获取手机报备规则key
//     * @Author: 广长
//     * @Date: 2020/7/21
//     * @Return: java.util.List<java.lang.String>
//     *//*
//    public List<String> getPhoneReportRulesKeyList() {
//        String phoneReportRules = this.phoneReportRules;
//        if (StringUtil.notEmpty(phoneReportRules)) {
//            return PhoneReportRulesEnum.getPhoneReportRulesKeyList(phoneReportRules);
//        }
//        return null;
//    }*/
//    public static void main(String[] args) {
//        System.out.println(getDefaultPhoneReportRulesJson());
//        System.out.println(getPhoneReportRulesKeyList(getDefaultPhoneReportRulesJson()));
//
//    }
//
//    private static class PhoneReportRules {
//        /**
//         * 唯一key
//         */
//        private String key;
//        /**
//         * 报备规则类型 1:大陆  ,2:港澳
//         */
//        private String type;
//        /**
//         * 名称
//         */
//        private String name;
//        /**
//         * 正则表达式
//         */
//        private String regular;
//
//        public String getKey() {
//            return key;
//        }
//
//        public void setKey(String key) {
//            this.key = key;
//        }
//
//        public String getType() {
//            return type;
//        }
//
//        public void setType(String type) {
//            this.type = type;
//        }
//
//        public String getName() {
//            return name;
//        }
//
//        public void setName(String name) {
//            this.name = name;
//        }
//
//        public String getRegular() {
//            return regular;
//        }
//
//        public void setRegular(String regular) {
//            this.regular = regular;
//        }
//    }
//
//}
